| Numbers |
NUMERIC, DECIMAL |
Firebird enforces the size of the storage, not the declared precision: a NUMERIC(4,2) column accepts 327.67. |
Created with the precision of that storage - 5, 10, 18 or 39 digits - and the declared scale, so every value Firebird accepted fits. |
INT128 |
Added in Firebird 4. PostgreSQL has no 128-bit integer. |
Becomes NUMERIC(39), which holds the full range. |
DECFLOAT(16), DECFLOAT(34) |
Decimal floating point, with an exponent range no fixed-precision column can declare. |
Becomes NUMERIC without a precision, which holds a DECFLOAT(34) value at any exponent, and NaN. |
BOOLEAN |
Nothing to reconcile - both engines have a real boolean. |
Stays BOOLEAN. |
| Date and time |
TIME |
Firebird keeps time of day to a ten-thousandth of a second. |
Arrives as TIME with all four fractional digits: 23:59:59.9999 stays 23:59:59.9999. |
TIME WITH TIME ZONE, TIMESTAMP WITH TIME ZONE |
Added in Firebird 4. The value carries a zone, either a region such as Europe/Prague or an offset. |
Become TIMETZ(4) and TIMESTAMPTZ(4). The instant is kept; a region name is not, because PostgreSQL does not store one. |
| Text |
CHAR(n), VARCHAR(n) |
Firebird's system tables record a UTF8 column's length in bytes, four per character. |
Created at the declared length in characters: a UTF8 CHAR(10) stays CHAR(10). A VARCHAR longer than 4,000 characters becomes TEXT. |
BLOB SUB_TYPE TEXT |
Text of unlimited length, stored in the column's character set. |
Becomes TEXT, read in the connection's character set so Czech, Cyrillic or Japanese text arrives as written. |
| Binary |
BLOB SUB_TYPE BINARY, BINARY, VARBINARY, CHARACTER SET OCTETS |
Raw bytes, including the CHAR(16) CHARACTER SET OCTETS columns older databases use for UUID keys. |
Become BYTEA, read as bytes rather than text, so a zero byte at the start, middle or end of a value survives. |
| Structure |
| Identifier case |
Firebird stores unquoted names in upper case; PostgreSQL folds unquoted names to lower case. |
Names arrive as Firebird stores them, so a Firebird customer table is "CUSTOMER" in PostgreSQL and has to be quoted in queries. Rename tables and columns on the mapping screen before the run. |